# -*- coding: utf-8 -*-
"""
:mod:`nubox.int`
================

Provides the ``NuBox`` hierarchy of sub-classes to store integer numbers as 
``ints``. 

"""
from __future__ import (division, with_statement, absolute_import, generators,
                         nested_scopes)

from .core import NuBoxScalar, NuBoxVector, NuBoxArray, NuBoxCube
from .const import INT_DUMMY


class Int(NuBoxScalar):
    """
    A scalar ``NuBox`` to hold an integer number as an ``int``.
    
    """
    clstypecode = 'i'
    clsdummy = INT_DUMMY


class IntVector(Int, NuBoxVector):
    """
    A vector of ``Ints``.
    
    """
    clschild = Int


class IntArray(IntVector, NuBoxArray):
    """
    An array of ``Ints`` (vector of ``IntVectors``).
    
    """
    clschild = IntVector


class IntCube(IntArray, NuBoxCube):
    """
    A cube of ``Ints`` (vector of ``IntArrays``).
    
    """
    clschild = IntArray


Int.clsparent = IntVector
IntVector.clsparent = IntArray
IntArray.clsparent = IntCube

del NuBoxScalar, NuBoxVector, NuBoxArray, NuBoxCube
